/*const hasPermission = {
    install (Vue, options) {
        Vue.directive('has', {
            inserted (el, binding, vnode) {
                let permTypes = vnode.context.$route.meta.permTypes;
                if (!permTypes.includes(binding.value)) {
                    el.parentNode.removeChild(el);
                }
            }
        });
    }

};
export default hasPermission;*/

// 必须包含列出的所有权限，元素才显示
export const hasPermission = {
    install (Vue, options) {
        Vue.directive('has', {
            inserted (el, binding, vnode) {
                let permTypes = vnode.context.$route.meta.permTypes;
                let value = binding.value.split(',')
                let flag = true
                for (let v of value) {
                    if (!permTypes.includes(v)) {
                        flag = false
                    }
                }
                if (!flag) {
                    el.parentNode.removeChild(el)
                }
            }
        });
    }

};
// 只要包含列出的任意一个权限，元素就会显示
export const hasAnyPermission = {
    install (Vue) {
        Vue.directive('hasAnyPermission', {
            inserted (el, binding, vnode) {
                let permissions = vnode.context.$store.state.account.permissions
                let value = binding.value.split(',')
                let flag = false
                for (let v of value) {
                    if (permissions.includes(v)) {
                        flag = true
                    }
                }
                if (!flag) {
                    el.parentNode.removeChild(el)
                }
            }
        })
    }
}

// 当不包含列出的权限时，渲染该元素
export const hasNoPermission = {
    install (Vue, options) {
        Vue.directive('hasNoPermission', {
            inserted (el, binding, vnode) {
                let permTypes = vnode.context.$route.meta.permTypes;
                let value = binding.value.split(',')
                let flag = true
                for (let v of value) {
                    if (permTypes.includes(v)) {
                        flag = false
                    }
                }
                if (!flag) {
                    el.parentNode.removeChild(el)
                }
            }
        });
    }

};
